package com.gov.ec.rsv.igm;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.event.ActionEvent;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.primefaces.event.SelectEvent;

import com.gov.ec.rsv.interfaces.ICrudDao;
import com.gov.ec.rsv.modelo.Auditoria;
import com.gov.ec.rsv.modelo.Usuario;
import com.gov.ec.rsv.util.FacesUtil;
import com.gov.ec.rsv.util.PrimeFaceUtil;


public class UsuarioBean extends FacesUtil{

	
	//Objetos Permisos
//	private Boolean perEditar;
//	private Boolean perGuardar;
//	private Boolean perEliminar;
	

	 /** La variable Usuario. */
    private Usuario usuario;
    private List<Usuario> listaUsuarios;
    private Auditoria auditoria;
	
    @EJB(name = "adminCrud/local")
	private ICrudDao adminCrud;

		public UsuarioBean() throws NamingException  {
		this.usuario = new Usuario();
		this.listaUsuarios = new ArrayList<Usuario>();
		InitialContext ic = new InitialContext();
		adminCrud= (ICrudDao) ic.lookup("RSVCCIGM/adminCrud/local");
	}
	
	/**
	 * Permite guardar o actulizar un objeto instalacion
	 * 
	 * @throws Exception 
	 */
	public void guardarUsuario() throws Exception {
		if (usuario.getIdUsuario() !=0 ) {
					adminCrud.actualizar(usuario);
		} else {
				adminCrud.insertar(usuario);
		}
		resetearValores();
		super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.usuario.getIdUsuario());
		this.usuario = new Usuario();
	}

	private void resetearValores(){
		setUsuario(new Usuario());
	}
	/**
	 * Permite eliminar un objeto Institucion
	 * @param event
	 * @autor 
	 */
	public void eliminarUsuario(ActionEvent event) {
		if (getUsuario()!= null) {
			try{
					adminCrud.eliminar(this.usuario);
			}catch(Exception e){
			}
		} else {
		}
	}

	/**
	 * Permite actualizar un objeto Usuario
	 * @autor 
	 */
	public void editarUsuario() {
		if (getUsuario()!= null) {
			super.addSuccessMessage("Usuario cargado "+this.usuario.getNombre()+""+this.usuario.getApellido());
			PrimeFaceUtil.saltarTabAcordeon("form:acoPanTec", 0);
		} else {
			
			super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.usuario.getNombre()+""+this.usuario.getApellido());
		}
	}

	private void cargarUsuario() {
		listaUsuarios = new ArrayList<Usuario>();
		List<Object> usuarioTmp = adminCrud.consultarTodo(new Usuario());
		for (Object usuTmp : usuarioTmp) {
			listaUsuarios.add((Usuario) usuTmp);
		}
	}
	/**
	 * Selecciona un objeto Usuario de un dataTable
	 * @param event
	 * @autor
	 */
	public void onRowSelect(SelectEvent event) {
		setUsuario((Usuario) event.getObject());
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Usuario> getListaUsuarios() {
		cargarUsuario();
		return listaUsuarios;
	}

	public void setListaUsuarios(List<Usuario> listaUsuarios) {
		this.listaUsuarios = listaUsuarios;
	}

	public Auditoria getAuditoria() {
		return auditoria;
	}

	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}
}
